Computers and other programmable electronic devices continue to be integrated into every aspect of society. Whereas computers once occupied entire rooms, computers and the integrated circuit devices, or chips, that power such computers have now been miniaturized and commoditized to such an extent that they can be found in even the most mundane of products and devices.
Programmable chips such as microprocessors, microcontrollers, Application Specific Integrated Circuits (ASIC's) and the like continue to increase in complexity and power while costs, power consumption and feature sizes decrease. Whereas computers once incorporate separate chips for processors, graphics controllers, coprocessors, memory controllers, and other chipset logic, oftentimes all of these types of functional units are integrated into a single programmable chip. Moreover, once a particular chip design has been developed, tested and verified, manufacturing costs are often comparatively low on a per unit basis.
A significant portion of the effort and expense associated with bringing a programmable chip to market are therefore devoted to the initial design, testing and verification of a programmable chip. For this reason, design reuse is employed whenever possible so that portions of a programmable chip, such as particular processor core designs, functional units, and other logic blocks, which have previously been designed, tested and verified, do not need to be recreated from scratch.
Even with design reuse, however, the integration of multiple design components into a common design frequently requires some custom logic to be designed and tested to ensure that the components will correctly operate with one another once integrated onto the same programmable chip. For example, modern microprocessors typically include functional units such as issue or instruction units, load/store units, execution units, memory controllers, graphics controllers, cache and other on-board memories, etc., and development of such microprocessors often requires substantial development, testing and verification efforts to ensure that all of the functional units operate in an intended manner.
Furthermore, many microprocessor designs rely on a basic design that can be extended through the use of different functional units to provide various designs that are optimized for different applications. For example, it may be desirable to extend the functionality of a microprocessor by integrating multiple processing cores together to facilitate parallel processing, as well as integrating various execution units within a processing core to optimize the core to handle certain types of workloads. For example, while a basic microprocessor design often includes a processing core with an issue or instruction unit that issues instructions to an execution unit referred to as a fixed point unit, integer unit or arithmetic logic unit that handles integer operations, additional execution units, e.g., floating point execution units, graphics engines, physics engines, encryption engines, and the like may be incorporated into the basic design to provide an application specific design that is optimized for certain applications.
With the ability to combine different types of execution units in various processing cores and programmable chips, significant design flexibility is provided for developing application-specific hardware. On the other hand, given the substantial up-front efforts still required to design, test and verify multiple functional units integrated into application-specific programmable chips, there are still substantial costs associated with bringing application-specific programmable chips to market.
Another concern that has arisen with respect to the development of programmable chips is the integration of functional units designed, developed or otherwise the property of different entities. Customers often rely on other entities to design their programmable chips, and often designs that are proprietary to both the entities that design the programmable chips and the customers are integrated together on the same programmable chips, often leading to licensing issues as well as concerns about maintaining the confidential nature of some designs.
Therefore, a significant need continues to exist in the art for a manner of facilitating the development of application-specific programmable chips and electronic devices incorporating the same.